//
//  ControlFlow.swift
//  Swift_base_grammar
//
//  Created by lantaiyuan on 2017/9/13.
//  Copyright © 2017年 lantaiyuan. All rights reserved.
//   控制流

import Foundation
import UIKit

/// if判断
func control1(_ x:Int) {
    /**
     1. 没有 ()
     2. 必须要有 {}
     在很多公司的开发规范中，都是禁止不使用 {} 的！
     3. 条件判断，C 语言中有一个非零即真，Swift 中只有 true / false
     */
    if x > 5 {
        print("高富帅")
    }
    
    if x > 20 {
        print("年纪太大了")
    }else {
      print("小了")
    }
}

/// 3目运算符
func control2(_ a:Int) {
    a > 5 ? print("哈哈") : print("呵呵")
}


/// if let
func control3() {
    let oldName : String? = "张三"
    let oldAge:Int? = 20
    print(oldAge!,oldName as Any)//强制解包,可选option  
    if oldName != nil && oldAge != nil {
        print("Mr" + oldName! + "---" + String(oldAge!))
    }
    // if let 可以设置数值，进入分支后，name 可以保证一定有值
    if let name = oldName {
        print("Hi" + name)
    }
    
    // 多值的设置，使用 , 分隔
    // 注意：if let 语句中不能使用 && || 条件
    if let name = oldName,let age = oldAge {
        print("Hi" + name + "---" + String(age))
    }
}

/// guard  和if let 相反
func control4() {
    let oldName : String? = "王五"
    let oldAge:Int? = 27
    guard let name = oldName else {
        print("name 为 nil")
        return
        
    }
    guard let age = oldAge else {
        print("age 为 nil")
        return
    }
    // 代码执行到此,name 和 age 一定有值
    // 在实际开发中，复杂的代码在条件判断之后
    // 使用 guard 会让嵌套层次少一层！
    print("Hi \(name)--\(age)")
    
}
